<?php
/**
 * View_Order
 *
 * Класс View_Question отвечает за вывод информации, связанной с модулем "Вопрос-ответ"
 *
 */
class View_Question extends View_Base {

	/**
	 * Выводит страницу вопроса
	 *
	 * @param Question $objQuestion - Объект вопроса
	 * @param array $arrCategory - Массив данных о категории вопроса
	 * @param array $arrAnswers - Массив ответов
	 */
	public function showOne($objQuestion, $objCategory, $arrAnswers) {
		echo '<div id="article-full">';
			echo '<h1>' . $objQuestion->getField('question_name');
			echo '</h1>';
			echo '<div class="simple-info">';
				echo '<div>';	
					echo 'Раздел: ';
					if($objCategory->getField('category_name')) echo '<a href="' . W_ABSPATH . $objCategory->getField('url') . '">' . $objCategory->getField('category_name') . '</a>';
					else echo  'Без категории';
					if($objCategory->getField('category_name')) echo ' | <a href="' . W_ABSPATH . $objCategory->getField('url') . '/questions">Другие вопросы раздела</a>';
					else echo  ' | <a href="' . W_ABSPATH .'no_category/questions">Другие вопросы раздела</a>';
				echo '</div>';
				$arrAuthor = $objQuestion->getAuthor();
			echo '</div>';
			echo '<div id="full-content">' . $objQuestion->getField('description') . '</div>';
			echo '<div class="question-from bottom-info">';
				echo 'Спрашивает:  ';
				if (SimpleAdministration::isAuthor($objQuestion->getField('ID_user'))) echo '<a class="user-blue-link" href="' . W_ABSPATH . 'profile">' . $arrAuthor ['first_name'] . ' ' . $arrAuthor['last_name'] .  '</a>';
				else echo '<a class="user-blue-link" href="' . W_ABSPATH . $arrAuthor['user_type'] . '/' . $arrAuthor['ID_user'] .  '">' . $arrAuthor ['first_name'] . ' ' . $arrAuthor['last_name'] .  '</a>';
				echo ' ' . Service_Date::changeDateFormat($objQuestion->getField('created_at'), 'Y-m-d H-i-s', 'j R Y в H:i');
			echo '</div>';
			echo '<div id="answer-form">';
				$objSession = User_Session::instance();
				if ($objSession->isLoggedIn()) {
					if(!SimpleAdministration::isAuthor($objQuestion->getField('ID_user')) && $objQuestion->canAnswer()) {
						echo '<p>Ваш ответ</p>';
						$objForm = new Form_ViewForm(array(
								'errorIfExists' => true,
								'viewFormType' => 'div',
								'class' => 'answer'), new Answer());
						$objForm->show();
						$objForm->textareaField(array('class' => 'mandatory'), 'text');
						$objForm->hiddenField(array('value' => User_User::getId()),'ID_user');// id текущего пользователя
						$objForm->hiddenField(array('value' => $objQuestion->id),'ID_question');// id текущего вороса
						$objForm->submitButton(array('value' => 'Отправить'), 'save');
						$objForm->close();
					}
				}
				else echo 'Чтобы ответить на вопрос <a href="' . W_ABSPATH . 'auth/sign_in">авторизуйтесь</a>';
			echo '</div>';
			echo '<div id="answers">';
				if (!$arrAnswers)  echo '<p>Ответов нет</p>';
				else {
					echo '<p>Ответы</p>';
					// Переменная для подчёта непросмотренных ответов(если страницу вопроса просматривает его автор)
					$notReadAnswers = 0;
					foreach ($arrAnswers as $arrAnswer) {
						// Если пользователь автор вопроса и текущий ответ им не просмотрен, то увеличиваем счётчик на 1
						if ($arrAnswer['is_read'] == '0' && SimpleAdministration::isAuthor($objQuestion->getField('ID_user'))) $notReadAnswers += 1;
						echo '<div class="answer-block">';
							echo '<div class="answer-info info">';
								echo '<table>';
									echo '<tr>';
										echo '<td class="mail_from_photo">';
											echo '<a href="' . W_ABSPATH . $arrAnswer['user_type'] . '/' . $arrAnswer['ID_answer_author'] . '">';
												$filename = IMAGES . 'essence/user/' . $arrAnswer['ID_answer_author'] . '/s_profile' . '.jpg';
												if(file_exists($filename)) echo '<img src="' . W_IMAGES . 'essence/user/' . $arrAnswer['ID_answer_author'] . '/s_profile' . '.jpg">';
												else echo '<img src="' . W_IMAGES . 'essence/user/s_nophoto.gif">';
											echo '</a>';
										echo '</td>';
										echo '<td>';
											if (SimpleAdministration::isAuthor($arrAnswer['ID_answer_author'])) echo '<a class="user-blue-link answer-author" href="' . W_ABSPATH . 'profile">' . $arrAnswer['first_name'] . ' ' . $arrAnswer['last_name'] . '</a> ';
											else echo '<a class="user-blue-link answer-author" href="' . W_ABSPATH . $arrAnswer['user_type'] . '/' . $arrAnswer['ID_answer_author'] .  '">' . $arrAnswer['first_name'] . ' ' . $arrAnswer['last_name'] . '</a> ';
											echo Service_Date::changeDateFormat($arrAnswer['created_at'], 'Y-m-d H-i-s', 'j R Y в H:i');
										echo '</td>';
										echo '<td class="answer-options">';
											if($arrAnswer['is_the_best'] == 0) {
												if(SimpleAdministration::isAuthorOrAdmin($objQuestion->getField('ID_user'))) {
													echo '<div title="Лучший ответ" id="' . $arrAnswer['ID_answer'] . '" class="make-best">';
													echo '</div>';
												}
												
											}
											elseif($arrAnswer['is_the_best'] == 1) {
												echo '<div class="is-the-best" id="' . $arrAnswer['ID_answer'] . '">';
													echo 'ЛУЧШИЙ ОТВЕТ';
												echo '</div>';
											}
										echo '</td>';
									echo '</tr>';
								echo '</table>';
							echo '</div>';
							echo '<div class="answer-content">';
								echo '<div class="answer-text">';
									echo $arrAnswer['text'];
								echo '</div>';
									if ($objSession->isLoggedIn()) {
										echo '<div class="actions-block">';
											echo '<div class="phantom-block">';
												if (SimpleAdministration::isAuthorOrAdmin($arrAnswer['ID_answer_author'])) echo '<a class="edit-link" id="' . $arrAnswer['ID_answer'] . '">Редактировать</a>';
												echo '<a class="comment-link" id="' . $arrAnswer['ID_answer'] . '">Комментировать</a>';
											echo '</div>';
										echo '</div>';
									}
							echo '</div>';
							
							echo '<div class="to-edit" id="answer-edit-text_' . $arrAnswer['ID_answer'] . '">';
							$objForm = new Form_ViewForm(array(
									'errorIfExists' => true,
									'viewFormType' => 'div',
									'class' => 'answer'), new Answer());
							$objForm->show();
							$objForm->hiddenField(array('value' => $arrAnswer['ID_answer']),'ID_answer');// id текущего ответа
							$objForm->textareaField(array('value' => $arrAnswer['text'], 'class' => 'mandatory'), 'text');
							$objForm->submitButton(array('value' => 'Отправить'), 'save');
							$objForm->close();
							echo '</div>';
							
							echo '<div class="to-comment" id="comment-text_' . $arrAnswer['ID_answer'] . '">';
								$objForm = new Form_ViewForm(array(
									'class' => 'comment-form',
									'errorIfExists' => true,
									'viewFormType' => 'div',
									), new QuestionComment());
								$objForm->show();
								$objForm->hiddenField(array('value' => User_User::getId()),'ID_user');// id текущего вороса
								$objForm->hiddenField(array('value' => $arrAnswer['ID_answer']),'ID_answer');// id текущего ответа
								$objForm->textareaField(array('class' => 'mandatory'), 'text');
								$objForm->submitButton(array('value' => 'Отправить'), 'save');
								$objForm->close();
							echo '</div>';
							echo '<div class="comments">';
								if(isset($arrAnswer['comments'])) {
									foreach ($arrAnswer['comments'] as $arrComment) {
										echo '<div class="comment-block">';
											echo '<div class="comment-info info">';
												echo '<ul>';
													echo '<li>';
														if (SimpleAdministration::isAuthor($arrComment['comment_author'])) echo '<a class="user-blue-link" href="' . W_ABSPATH . 'profile">' . $arrComment['first_name'] . ' ' . $arrComment['last_name'] . '</a> ';
														else echo '<a class="user-blue-link" href="' . W_ABSPATH . $arrComment['user_type'] . '/' . $arrComment['comment_author'] .  '">' . $arrComment['first_name'] . ' ' . $arrComment['last_name'] . '</a> ';
													echo '</li>';	
													echo '<li>';
														echo Service_Date::changeDateFormat($arrComment['created_at'], 'Y-m-d H-i-s', 'j R Y в H:i');
													echo '</li>';
												echo '</ul>';
											echo '</div>';
											echo '<div class="comment-text">';
												echo $arrComment['text'];
											echo '</div>';
										echo '</div>';
									}
								}
							echo '</div>';
						echo '</div>';
					}
					if($notReadAnswers > 0) $objQuestion->makeRead($notReadAnswers);
				}
			echo '</div>'
			;
		echo '</div>';
	}
	
	/**
	 * Выводит форму добавления вопроса
	 *
	 * @param Question $objQuestion
	 */
	public function showAddForm(Question $objQuestion) {
		Service_Debug::setDebug();
		$objSession = User_Session::instance();

		$objForm = new Form_ViewForm(array(
				'errorIfExists' => true,
				'leftWidth' => 320,
				'viewFormType' => 'table'
		), $objQuestion);
		
		echo '<div class="reg-background like-reg-block">';
			echo '<div id="add-order-block">';
				if(!$objSession->isLoggedIn()) echo '<p class="important-info">Вы не авторизованы.<a href="' . W_ABSPATH . 'auth/sign_in"> Войдите </a>на сайт или продолжите заполнение формы, дополнительно указав данные для регистрации.</p>';
				echo '<p class="grey">Здездочкой (<span class="required">*</span>) отмечены поля обязательные для заполнения</p>';
				$objForm->show();

				$objCategory = new Category();
				$arrCategories = $objCategory->find('all', array('select' => 'category_name, ID_category', 'order' => "category_name ASC",));
				$objForm->selectField(array('text' => 'Категория','valueName' => 'category_name','keyName' => 'ID_category',
						'optionsArray' =>$arrCategories, 'chooseText' => 'Без категории'),'ID_category');
				$objForm->textField(array('text' => 'Заголовок или вопрос кратко', 'required' => 1), 'question_name');
				$objForm->textareaField(array('rows' => 15, 'cols' => 80, 'text' => 'Подробное описание вопроса', 'required' => 1), 'description');
		
				if(!$objSession->isLoggedIn()) {
					echo '</table>';
					echo '</div>';
					echo '<div id="reg-in-order">';
						echo '<table><tr><td><h1>Регистрация</h1></td></tr>';
	  	 				$objForm->textField(array('maxlength' => '64', 'text' => 'Имя', 'required' => 1), 'first_name');
	  	 				$objForm->textField(array('maxlength' => '64', 'text' => 'Фамилия', 'required' => 1), 'last_name');
	  	 				$objForm->textField(array('maxlength' => '128', 'text' => 'Электронная почта', 'required' => 1), 'e_mail');
	  	 				$objForm->passwordField(array('maxlength' => '32', 'text' => 'Пароль', 'required' => 1), 'pass');
	  	 				$objForm->passwordField(array('maxlength' => '32', 'text' => 'Подтверждение пароля', 'required' => 1), 'pass_confirmation');
	  	 				$objForm->selectField(array('text' => 'Роль на портале', 'optionsArray' => array ('customer' => 'Заказчик', 'master' => 'Мастер')),'user_type');
					}
					echo '<tr><td id="kaptcha-td">';
					$objForm->kaptchaField(array('maxlength' => '6', 'text' => 'Введите код', 'required' => 0, 'value' => '' , 'class' => 'kaptchaInput'), 'kaptcha');
					echo '</tr>';
					$objForm->submitButton(array('value' => 'Отправить'), 'save');
					$objForm->close();
			echo '</div>';
		echo '</div>';
	}
	
	/**
	 * Выводит форму редактирвоания вопроса
	 * 
	 * @param Question $objQuestion
	 */
	public function showEditForm(Question $objQuestion) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objQuestion);
		$objForm->show();
			$objCategory = new Category();
			$arrCategories = $objCategory->find('all', array('select' => 'category_name, ID_category', 'order' => "category_name ASC",));
			$objForm->selectField(array('text' => 'Категория','valueName' => 'category_name','keyName' => 'ID_category',
					'optionsArray' =>$arrCategories, 'chooseText' => 'Без категории'),'ID_category');
			$objForm->textField(array('text' => 'Заголовок или вопрос кратко', 'required' => 1), 'question_name');
			$objForm->textareaField(array('rows' => 15, 'cols' => 80, 'text' => 'Подробное описание вопроса', 'required' => 1), 'description');
			$objForm->submitButton(array(), 'save');
		$objForm->close();
	}
	
	
	/**
	 * (non-PHPdoc)
	 * @see View_Base::showOneInList()
	 */
	public function showOneInAdminList($arrQuestion) {
		Service_Debug::setDebug();
		echo '<tr>';
			echo '<td class="middle-title">';
		 		echo '<div class="middle-title">';
					echo '<a href="' . W_ABSPATH . 'questions/' . $arrQuestion['ID_question'] . '" class="middle-green-link">' . $arrQuestion['question_name'] . '</a>';
		 		echo '</div>';
			echo '</td>';
			echo '<td class="views center">';
				echo $arrQuestion['viewings'];
			echo '</td>';
			echo '<td class="answers center" class="center">';
				echo $arrQuestion['answers'];
			echo '</td>';
			echo '<td class="vertical-middle question-from">';
				echo '<p>от ';
					if (SimpleAdministration::isAuthor($arrQuestion['ID_user'])) echo '<a class="user-blue-link" href="' . W_ABSPATH . 'profile">' . $arrQuestion['first_name'] . ' ' . $arrQuestion['last_name'] . '</a> ';
					else echo '<a class="user-blue-link" href="' . W_ABSPATH . $arrQuestion['user_type'] . '/' . $arrQuestion['ID_user'] .  '">' . $arrQuestion['first_name'] . ' ' . $arrQuestion['last_name'] . '</a> ';
				echo '</p>';
				echo '<p>' .Service_Date::changeDateFormat($arrQuestion['created_at'], 'Y-m-d H-i-s', 'j R Y в H:i');
				echo '</p>';
			echo '</td>';
		echo '</tr>';
	}
	
	/**
	 * Метод отображает список элементов переданного массива
	 *
	 * @param array $arrQuestions - массив вопросов для отображения
	 * @param int $pagesNumber - количество страниц для навигации
	 * @param int $pageNumber - номер текущей страницы
	 */
	public function showAdminList($arrQuestions, $objCategory, $pagesNumber,$pageNumber, $essenceCount) {
		Service_Debug::setDebug();
    	echo '<div id="questions-list">';
    		if ($objCategory == null) echo '<div class="simple-info nomargin">Вопросов задано:' . ' ' . $essenceCount . '</div>';
      		else echo '<div class="simple-info nomargin">Вопросов этой категории задано:' . ' ' . $essenceCount . '</div>';
    		if (!$arrQuestions) echo 'Вопросов нет';
  	  		else {
  	  			echo '<table id="questions-table">';
  	  				echo '<tr id="first-line">';
  	  					echo '<td>Тема</td>';
  	  					echo '<td class="views center" class="center">Просмотров</td>';
  	  					echo '<td class="answers center">Ответов</td>';
  	  					echo '<td></td>';
  	  				echo '</tr>';
  	  				foreach ($arrQuestions as $arrQuestion) {
	      				$this->showOneInAdminList($arrQuestion);
	      			}
	      		echo '</table>';
	    	}
		echo '</div>';
		if ($pagesNumber > 1) {
			if ($objCategory == null) $pattern = W_ABSPATH . 'questions?'; 
			elseif($objCategory->id) $pattern =  W_ABSPATH . $objCategory->getField('url') . '/questions?';
			else $pattern =  W_ABSPATH . 'no_category' . '/questions?';
			$this->getNavigation($pattern, $pageNumber, $pagesNumber); 
		}
	}
	
	
}
?>